﻿using System.Collections.Generic;
using Entidades;
using Persistencia.Repositorios;

namespace Controladores
{
    public class PagoControlador
    {
        PagoRepositorio _PagoRepositorio = new PagoRepositorio();

        /// <summary>
        /// Devuelve el Pago de un Proveedor, asociado a un Guion
        /// </summary>
        /// <returns></returns>
        public Pago ObtenerPago(int idProveedor, int idRolProveedor, int idGuion, int idEstado)
        {
            return _PagoRepositorio.ObtenerPago(idProveedor, idRolProveedor, idGuion, idEstado);
        }

        /// <summary>
        /// Devuelve los Pagos correspondientes a una lista de Guiones, según un Estado de Pago y un Tipo de Usuario (opcional)
        /// </summary>
        /// <param name="idsGuiones"></param>
        /// <param name="idEstadoPago"></param>
        /// <param name="idTipoUsuario"></param>
        /// <param name="idCategoriaUsuario"></param>
        /// <returns></returns>
        public IList<Pago> ObtenerPagos(int[] idsGuiones, int idEstadoPago, int? idTipoUsuario = null, int? idCategoriaUsuario = null)
        {
            return _PagoRepositorio.ObtenerPagos(idsGuiones, idEstadoPago, idTipoUsuario, idCategoriaUsuario);
        }

        /// <summary>
        /// Devuelve los Pagos correspondientes a una lista de Pagos
        /// [Opcional] Rol de Proveedor
        /// [Opcional] Categoría de Proveedor
        /// [Opcional] Tipo de Proveedor ignorado
        /// [Opcional] Categoría de Proveedor ignorada
        /// </summary>
        /// <param name="idsPagos"></param>
        /// <param name="idEstadoPago"></param>
        /// <param name="idRolProveedor"></param>
        /// <param name="idCategoriaProveedor"></param>
        /// <param name="idRolProveedorIgnorado"></param>
        /// <param name="idCategoriaProveedorIgnorada"></param>
        /// <returns></returns>
        public IList<Pago> ObtenerPagosSegunListaDePagos(int[] idsPagos, int idEstadoPago, int? idRolProveedor = null, int? idCategoriaProveedor = null, int? idRolProveedorIgnorado = null, int? idCategoriaProveedorIgnorada = null)
        {
            return _PagoRepositorio.ObtenerPagosSegunListaDePagos(idsPagos, idEstadoPago, idRolProveedor, idCategoriaProveedor, idRolProveedorIgnorado, idCategoriaProveedorIgnorada);
        }

        /// <summary>
        /// Guarda un Pago
        /// </summary>
        /// <param name="guion"></param>
        /// <returns></returns>
        public bool GuardarPago(Pago pago)
        {
            return _PagoRepositorio.GuardarPago(pago);
        }
    }
}
